package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import manejadores.ManejadorPersonal;

import censo.db;
import entidades.Personal;


/**
 * Servlet implementation class SrvUsuarios
 */
@WebServlet("/SrvPersonal")
public class SrvPersonal extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SrvPersonal() {
        super();
        // TODO Auto-generated constructor stub
    }

    
    protected void ProcesarPeticion(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
    	response.setContentType("text/html;charset=ISO-8859-1");
    	PrintWriter out = response.getWriter();

		String operacion = (String) request.getParameter("operacion");
		db conexion = null;

		/* Inicio operacion Agregar Usuario */

		if (operacion.equals("add")) { 
			String codigo = (String) request.getParameter("codigo");
			String nombre = (String) request.getParameter("nombre");
			String direccion = (String) request.getParameter("direccion");
			String telefono = (String) request.getParameter("telefono");
			String correo = (String) request.getParameter("correo");
			String estado = (String) request.getParameter("estado");
			
			
			try {
				conexion = new db();
				Personal personal = new Personal();
				personal.setCodigo(codigo);
				personal.setNombre(nombre);
				personal.setDireccion(direccion);
				personal.setTelefono(telefono);
				personal.setCorreo(correo);
				personal.setEstado(estado);
				
				
				ManejadorPersonal MP = new ManejadorPersonal(conexion,personal);
				if (!MP.exist(personal.getCodigo())) {
					if (MP.add()) {
						out.print("OK");
					}else {
						out.print("Error al procesar la solicitud");
					}
					
				}else {
					out.print("Personal ya existe: " +personal.getCodigo());
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print("Error de conexion con el servidor: "
						+ e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}

		}

		

		if (operacion.equals("modify")) {
			String codigo = (String) request.getParameter("codigo");
			String nombre = (String) request.getParameter("nombre");
			String direccion = (String) request.getParameter("direccion");
			String telefono = (String) request.getParameter("telefono");
			String correo = (String) request.getParameter("correo");
			String estado = (String) request.getParameter("estado");
			String key = (String) request.getParameter("key");
			
			try {
				conexion = new db();
				Personal personal = new Personal();
				personal.setCodigo(codigo);
				personal.setNombre(nombre);
				personal.setDireccion(direccion);
				personal.setTelefono(telefono);
				personal.setCorreo(correo);
				personal.setEstado(estado);
				
				
				ManejadorPersonal MP = new ManejadorPersonal(conexion,personal);
				if (MP.exist(key)) {
					if (MP.update(key)) {
						out.print("OK");
					}else {
						out.print("Error al procesar la solicitud");
					}
					
				}else {
					out.print("Personal no existe: " +personal.getCodigo());
				}

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print("Error de conexion con el servidor: "
						+ e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}

		}

		

		if (operacion.equals("list")) {
			try {
				conexion = new db();
				ManejadorPersonal MP = new ManejadorPersonal(conexion);
				ArrayList<Personal> personas = MP.list();

					out.println("<h2>Listado Personal</h2>");
					out.println("<table>");
					out.println("<tr>");
					out.println("<th>Codigo</th>");
					out.println("<th>Nombre</th>");
					out.println("<th>Direccion</th>");
					out.println("<th>Telefono</th>");
					out.println("<th>Correo</th>");
					out.println("<th>Estado</th>");
					out.println("<th>Accion</th>");
					out.println("</tr>");
					int fila=1;
					for (Personal personal : personas)
					{
						out.println("<tr " + (fila%2==0?"class='odd'":"") + ">");
						out.println("<td>" + personal.getCodigo() + "</td>");
						out.println("<td>" + personal.getNombre() + "</td>");
						out.println("<td>" + personal.getDireccion() + "</td>");
						out.println("<td>" + personal.getTelefono() + "</td>");
						out.println("<td>" + personal.getCorreo() + "</td>");
						out.println("<td>" + personal.getEstado() + "</td>");
						out.println("<td>");
						out.print("<a href=\"mod_personal.jsp?menu=2&codigo="
								+ personal.getCodigo()
								+ "\">Modificar</a>");
						out.println("</td>");
						out.println("</tr>");
						fila++;
					} 
					out.println("<tr>");
					out.println("<td colspan='7'>Total personal: " + personas.size() + "</td>");
					out.println("</tr>");
					out.println("</table>");
				

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print(e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}
			/* Fin operacion listar departamentos */

		}
		
		if (operacion.equals("remove")) {
			try {
				conexion = new db();
				String key = (String)request.getParameter("key");
				ManejadorPersonal MP = new ManejadorPersonal(conexion);
				if (MP.exist(key)) {
					if (MP.remove(key)) {
						out.print("OK");
					}else {
						out.print("Error al procesar la solicitud");
					}
					
				}else {
					out.print("Placa no existe: " + key);
				}
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print(e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}
		}
		
		
		
		
		
		out.close();
	}
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.ProcesarPeticion(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.ProcesarPeticion(request, response);
	}

}
